<?php

namespace App\Http\Controllers\Api\Teacher;

use App\Models\Knowledge;
use App\Models\KnowledgeCategory;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use App\Http\Controllers\Controller;

class WpsController extends Controller
{
    /**
     * WPS文档列表（仅查询is_wps=1的数据）
     * GET /api/teacher/wpss
     */
    public function index(Request $request)
    {
        // 请求参数（仅查询WPS文档）
        $title = $request->input('title'); // 标题搜索
        // $categoryId = $request->input('category_id'); // 分类ID
        $status = $request->input('status', 1);
        $page = $request->input('page', 1);
        $pageSize = $request->input('page_size', 10);

        // 强制筛选is_wps=1，且类型为PDF（type=1）
        $query = Knowledge::with('category:id,name')
                        // ->where('teacher_id', auth('admin')->id())
                        ->where('is_wps', 1)
                        ->where('type', 1);

        // 搜索条件
        if (!empty($title)) {
            $query->where('title', 'like', "%{$title}%");
        }
        // if (!empty($categoryId)) {
        //     $query->where('category_id', $categoryId);
        // }
        if (isset($status)) {
            $query->where('status', $status);
        }

        $wpss = $query->paginate($pageSize, ['*'], 'page', $page);

        return $this->paginated($wpss->items(), $wpss);
    }

    /**
     * 获取可用分类（供WPS文档选择）
     * GET /api/teacher/wps-categories
     */
    public function categoryList(Request $request)
    {
        $name = $request->input('name');
        $query = KnowledgeCategory::where('status', 1);

        if (!empty($name)) {
            $query->where('name', 'like', "%{$name}%");
        }

        return $this->success($query->get());
    }

    /**
     * 新增/编辑WPS文档
     * POST/PUT /api/teacher/wpss
     */
    public function save(Request $request)
    {
        // 验证参数
        $request->validate([
            'id' => 'nullable|integer|exists:knowledges,id',
            'title' => 'required|string|max:100',
            'file_url' => 'required|array', // 必须上传PDF文件
            'status' => 'boolean',
            'remark' => 'nullable|string', // 添加备注字段验证
        ]);

        $data = [
            'title' => $request->input('title'),
            'type' => 1, // 强制PDF类型
            'is_wps' => 1, // 强制标记为WPS文档
            'status' => $request->input('status', 1),
            'teacher_id'=> auth('admin')->id(),
            'remark' => $request->input('remark'), // 添加备注字段
        ];

        // 验证文件是否为PDF（简单校验扩展名）
        foreach ($request->input('file_url') as $url) {
            if (!preg_match('/\.pdf$/i', $url)) {
                return $this->error("文件 {$url} 不是PDF格式（WPS文档仅支持PDF）", 422);
            }
        }

        // 存储文件URL（JSON字符串）
        $data['file_url'] = json_encode($request->input('file_url'));

        // 新增或更新
        $wps = Knowledge::updateOrCreate(
            ['id' => $request->input('id')],
            $data
        );

        $message = $request->input('id') ? 'WPS文档更新成功' : 'WPS文档创建成功';
        return $this->success($wps, $message);
    }

    /**
     * WPS文档专用上传接口（仅支持PDF）
     * POST /api/teacher/wps-upload
     */
    public function upload(Request $request)
    {
        $request->validate([
            'files' => 'required|array',
            'files.*' => 'file|mimes:pdf|max:102400' // 仅允许PDF，单文件100MB
        ]);

        // 获取基础URL
        $baseUrl = config('app.base_url', config('app.url'));

        $urls = [];
        foreach ($request->file('files') as $file) {
            // 存储路径（独立目录，便于区分）
            $path = 'wps/pdf/' . date('Ymd');
            $filename = uniqid() . '.pdf';
            $file->storeAs($path, $filename, 'public');

            $urls[] = $baseUrl . Storage::url("{$path}/{$filename}");
        }

        $data = [
            'file_urls' => $urls,
            'file_urls_json' => json_encode($urls)
        ];
        
        return $this->success($data);
    }
}
